今天我們將建立多層感知器(Multilayer perceptron)模型並開始訓練,今天大部分都會講解程式碼的部分,也會碰到一些數學公式,慢慢熟悉,我們一起努力!
建立模型
我們將建立多層感知器(Multilayer perceptron)模型,之前有提到的輸入層、輸出層、隱藏層概念,今天也要正式開跑啦!輸入層(X)共有784神經元,隱藏層(h)共有256,輸出層共有10個神經元。
筆者將由以下圖片進行說明:
加入輸入層與隱藏層需鍵入以下指令
(Dense(units=256,
input_dim=784,
kernel_initializer='normal',
activation='relu'))
加入輸出層需鍵入以下指令
(Dense(units=10,
kernel_initializer='normal',
activation='softmax'))
匯入所需模組,如下圖所示:
建立Sequential模型
建立一個線性堆疊模組,後續只需使用model.add()方法,將各神經網路層加入模型即可,輸入以下指令model = Sequential()
建立輸入層與隱藏層
以下所示之程式碼,可將輸入層與隱藏層加入模型,使用model.add方法並加入Dense神經網路層即可。
其中Dense神經網路層特色是將所有上一層與下一層的神經元完全連結。
注意!建立Dense神經網路層,需要輸入以下參數!
注意!建立輸出層,需要輸入以下參數!
print(model.summary())
注意!總共會看到有兩個層,隱藏層共256個神經元,因為輸入層與隱藏層一起建立,並不會顯示輸入層。輸出層則為10個神經元。
進行訓練
經過一堆繁雜的過程後,要進行到訓練的部分啦!
定義訓練方式
訓練模型前,我們必須要使用compile方法,對訓練模型進行設定,如下所示:
開始訓練
結束後我們就要開始進行訓練,今天會先提供執行訓練的程式碼,明天再仔細講解,如下所示:
train_history =model.fit(X=X_Train_normalize,
Y=Y_Train_OneHot,validation_split=0.2,
epochs=10, batch_size=200,verbose=2)
今天先進行簡單的訓練,明天會仔細講解再進行進階,對筆者來說今天這部分實在是有些困難,但學習程式的確是會常常碰壁,只要咬牙撐過還是可以過去的~共勉之!
Reference: 林大貴(2019):TensorFlow+Keras 深度學習人工智慧實務應用。新北市:博碩文化